<?php
    /**
     * Created by PhpStorm.
     * User: mybook-lhp
     * Date: 18/2/5
     * Time: 下午1:34
     */

    namespace app\common\command;

    use think\console\Command;
    use think\console\Input;
    use think\console\input\Argument;
    use think\console\Output;


    /**
     * 调用模块的操作方法 参数格式 [模块/控制器/]操作
     *
     * @param string       $url          调用地址
     * @param string|array $vars         调用参数 支持字符串和数组
     * @param string       $layer        要调用的控制层名称
     * @param bool         $appendSuffix 是否添加类名后缀
     */
    class Action extends Command
    {

        protected function configure()
        {

            $this->setName('action')->addArgument('action',Argument::OPTIONAL,"Enter Url")->setDescription('调用模块的操作方法！');
        }

        /**
         * @param Input  $input
         * @param Output $output
         *
         * @return int|null|void
         */
        protected function execute(Input $input,Output $output)
        {

            $action = trim($input->getArgument('action'));
            $action = explode('/', strtolower($action));

            $action_[] = isset($action[0]) ? $action[0] : 'index';

            $action_[] = isset($action[1]) ? $action[1] : 'index';

            $action_[] .= isset($action[2]) ? $action[2] : 'index';

            $request = action($action);

            if (is_array($request))
            {
                foreach ($request as $key => $item)
                {
                    $output->writeln($item);
                }
            }
            elseif (is_string($action))
            {
                $output->writeln($request);
            }
        }
    }